package com.yuanzong.wuliu.service.admin.system.apk;

import com.yuanzong.wuliu.common.exception.BusinessException;
import com.yuanzong.wuliu.common.utils.id.SnowFlakeUtils;
import com.yuanzong.wuliu.common.vo.ApiResult;
import com.yuanzong.wuliu.common.vo.ApiResultPage;
import com.yuanzong.wuliu.controller.admin.system.apk.param.AdminSystemApkAddParam;
import com.yuanzong.wuliu.controller.admin.system.apk.param.AdminSystemApkInfoParam;
import com.yuanzong.wuliu.controller.admin.system.apk.param.AdminSystemApkPageParam;
import com.yuanzong.wuliu.controller.admin.system.apk.param.AdminSystemApkRemoveParam;
import com.yuanzong.wuliu.controller.intercdeptor.AdminHandlerInterceptorAdapter;
import com.yuanzong.wuliu.model.system.apk.SystemApk;
import com.yuanzong.wuliu.model.system.apk.query.SystemApkPageQuery;
import com.yuanzong.wuliu.model.system.user.SystemUser;
import com.yuanzong.wuliu.service.system.apk.factory.SystemApkFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;

@Service
public class AdminSystemApkService {

    public ApiResult page(AdminSystemApkPageParam param) throws Exception {
        // ===================================================================================//
        // ===== 当前登陆用户
        // ===================================================================================//
        SystemUser runtimeUser = AdminHandlerInterceptorAdapter.getRuntimeUser();
        // ===================================================================================//
        // ===== 参数校验
        // ===================================================================================//
        if (param == null) {
            throw new BusinessException("参数为空");
        }
        // ===================================================================================//
        // ===== 业务执行
        // ===================================================================================//
        SystemApkPageQuery systemApkPageQuery = new SystemApkPageQuery();
        BeanUtils.copyProperties(param, systemApkPageQuery);
        ApiResultPage<SystemApk> apiResultPage = SystemApkFactory.getSystemApkService().pageSubject(systemApkPageQuery);
        return ApiResult.success(apiResultPage);
    }

    public ApiResult add(AdminSystemApkAddParam param) throws Exception {
        // ===================================================================================//
        // ===== 当前登陆用户
        // ===================================================================================//
        SystemUser runtimeUser = AdminHandlerInterceptorAdapter.getRuntimeUser();
        // ===================================================================================//
        // ===== 参数校验
        // ===================================================================================//
        if (param == null) {
            throw new BusinessException("参数为空");
        }
        // ===================================================================================//
        // ===== 业务执行
        // ===================================================================================//
        SystemApk systemApk = new SystemApk();
        BeanUtils.copyProperties(param, systemApk);
        systemApk.setId(SnowFlakeUtils.getId());
        systemApk.setCreateTime(LocalDateTime.now());
        SystemApkFactory.getSystemApkService().save(systemApk);
        return ApiResult.success();
    }

    public ApiResult info(AdminSystemApkInfoParam param) throws Exception {
        // ===================================================================================//
        // ===== 当前登陆用户
        // ===================================================================================//
        SystemUser runtimeUser = AdminHandlerInterceptorAdapter.getRuntimeUser();
        // ===================================================================================//
        // ===== 参数校验
        // ===================================================================================//
        if (param == null) {
            throw new BusinessException("参数为空");
        }
        // ===================================================================================//
        // ===== 业务执行
        // ===================================================================================//
        SystemApk systemApk = SystemApkFactory.getSystemApkService().getById(param.getId());
        return ApiResult.success(systemApk);
    }

    public ApiResult remove(AdminSystemApkRemoveParam param) throws Exception {
        // ===================================================================================//
        // ===== 当前登陆用户
        // ===================================================================================//
        SystemUser runtimeUser = AdminHandlerInterceptorAdapter.getRuntimeUser();
        // ===================================================================================//
        // ===== 参数校验
        // ===================================================================================//
        if (param == null) {
            throw new BusinessException("参数为空");
        }
        // ===================================================================================//
        // ===== 业务执行
        // ===================================================================================//
        SystemApkFactory.getSystemApkService().removeById(param.getId());
        return ApiResult.success();
    }
}
